tests: add format_with_space test
authorØyvind Kolås <pippin@gimp.org>
Thu, 21 Jun 2018 12:49:12 +0000 (14:49 +0200)
committerØyvind Kolås <pippin@gimp.org>
Thu, 21 Jun 2018 12:50:02 +0000 (14:50 +0200)
Testing that both R'G'B' formats and CIE Lab float keep the space they have
been created with.

tests/Makefile.am
tests/format_with_space.c [new file with mode: 0644]

index 98f4ae28dae78c1333a4af8197e896022fbf685f..3f4af724986528189de6735973c0c2adefd24e6c 100644 (file)
@@ -17,7 +17,8 @@ C_TESTS =                             \
        float-to-8bit \
        hsl    \
        hsva   \
-       types                   \
+       types   \
+       format_with_space   \
        palette \
        extract \
        nop \
diff --git a/tests/format_with_space.c b/tests/format_with_space.c
new file mode 100644 (file)
index 0000000..cf10634
--- /dev/null
@@ -0,0 +1,109 @@
+/* babl - dynamically extendable universal pixel conversion library.
+ * Copyright (C) 2005, 2017 Øyvind Kolås.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 3 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General
+ * Public License along with this library; if not, see
+ * <http://www.gnu.org/licenses/>.
+ */
+
+#include "config.h"
+#include <math.h>
+#include "babl-internal.h"
+
+static int
+test2 (void)
+{
+  int OK = 1;
+  const Babl *sRGB = babl_space ("sRGB");
+  const Babl *fmt;
+
+  fmt = babl_format ("R'G'B' u8");
+  if (babl_format_get_space (fmt) != sRGB)
+  {
+    babl_log ("created space %s doesn't have sRGB when it should", babl_get_name (fmt));
+    OK = 0;
+  }
+  fmt = babl_format_with_space ("R'G'B' u8", NULL);
+  if (babl_format_get_space (fmt) != sRGB)
+  {
+    babl_log ("created space %s doesn't have sRGB when it should", babl_get_name (fmt));
+    OK = 0;
+  }
+  fmt = babl_format_with_space ("R'G'B' u8", sRGB);
+  if (babl_format_get_space (fmt) != sRGB)
+  {
+    babl_log ("created space %s doesn't have sRGB when it should", babl_get_name (fmt));
+    OK = 0;
+  }
+  fmt = babl_format_with_space ("CIE Lab float", sRGB);
+  if (babl_format_get_space (fmt) != sRGB)
+  {
+    babl_log ("created space %s doesn't have sRGB when it should", babl_get_name (fmt));
+    OK = 0;
+  }
+
+  if (!OK)
+    return -1;
+  return 0;
+}
+
+static int
+test3 (void)
+{
+  int OK = 1;
+  const Babl *apple  = babl_space ("Apple");
+  const Babl *sRGB = babl_space ("sRGB");
+  const Babl *fmt;
+
+  fmt = babl_format ("R'G'B' u8");
+  if (babl_format_get_space (fmt) != sRGB)
+  {
+    babl_log ("created space %s doesn't have sRGB when it should", babl_get_name (fmt));
+    OK = 0;
+  }
+  fmt = babl_format_with_space ("R'G'B' u8", NULL);
+  if (babl_format_get_space (fmt) != sRGB)
+  {
+    babl_log ("created space %s doesn't have sRGB when it should", babl_get_name (fmt));
+    OK = 0;
+  }
+  fmt = babl_format_with_space ("R'G'B' u8", apple);
+  if (babl_format_get_space (fmt) != apple)
+  {
+    babl_log ("created space %s doesn't have apple when it should", babl_get_name (fmt));
+    OK = 0;
+  }
+  fmt = babl_format_with_space ("CIE Lab float", apple);
+  if (babl_format_get_space (fmt) != apple)
+  {
+    babl_log ("created space %s doesn't have apple when it should", babl_get_name (fmt));
+    OK = 0;
+  }
+
+  if (!OK)
+    return -1;
+  return 0;
+}
+
+int
+main (int    argc,
+      char **argv)
+{
+  babl_init ();
+  if (test2 ())
+    return -1;
+  if (test3 ())
+    return -1;
+  babl_exit ();
+  return 0;
+}